package controller

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

// GinPathParamsTest 路径传参
func GinPathParamsTest(c *gin.Context) {
	name := c.Param("name")
	c.JSON(200, gin.H{
		"code": 200,
		"name": name,
	})
}

// GinUrlParamsTest url 传参
// 请求地址：http://localhost:8000/user?name=weskey
func GinUrlParamsTest(c *gin.Context) {
	name := c.DefaultQuery("name", "默认姓名")
	c.JSON(200, gin.H{
		"code": 200,
		"name": name,
	})
}

// GinFormDataTest form 表单提交,  multipart/form-data
func GinFormDataTest(c *gin.Context) {
	name := c.PostForm("name")
	c.JSON(200, gin.H{
		"code": 200,
		"name": name,
	})
}

// 定义一个私有结构体
type LoginUser struct {
	Name string `form:"name"`
	Pass string `form:"pass"`
}

// GinJsonDataByStructTest 使用Json就行数据传输
// 请求地址:http://localhost:8000/jsonData
// 结构体如下：
/*
{
	 "name": "super",
	 "pass" : "12344312421"
}
*/
func GinJsonDataByStructTest(c *gin.Context) {
	// 声明一个结构体
	var user LoginUser
	if err := c.BindJSON(&user); err != nil {
		fmt.Println("json err -> ", err)
	} else {
		c.JSON(200, gin.H{
			"code": 200,
			"name": user.Name,
			"pass": user.Pass,
		})
	}
}

// todo 补充返回值样例

func RespStructTest(c *gin.Context) {
	// 声明一个结构体
	var loginUser = LoginUser{
		Name: "wesley",
		Pass: "112233",
	}
	c.JSON(200, loginUser)
}

func RespXmlTest(c *gin.Context) {
	// 声明一个结构体
	var loginUser = LoginUser{
		Name: "wesley",
		Pass: "112233",
	}
	c.XML(200, loginUser)
}
func RespYmlTest(c *gin.Context) {
	// 声明一个结构体
	var loginUser = LoginUser{
		Name: "wesley",
		Pass: "112233",
	}
	c.YAML(200, loginUser)
}
